/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui;

import java.awt.Choice;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import logic.Encuentro;
import logic.LectorArchivo;
import logic.Liga;
import logic.TablaPosiciones;

/**
 *
 * @author Vicky
 */
public class JFrameSeleccionarLiga extends javax.swing.JFrame {
    private FondoPanel fondo;
    private Choice listaLigas;
    private Liga[] ligas;
    private int nroLigas = -1;
    private VentanaEquipos ventanaEquipos;
    private Encuentro encuentro;
    /**
     * Crea el JFrame principal de la interfaz.
     */
    public JFrameSeleccionarLiga(Liga[] liga) {
        
        this.setContentPane(new FondoPanel("/images/grama3.jpg")); 
        initComponents();
        this.setBounds(0, 0, 910, 500);
        
        ligas = liga;
        
        listaLigas = new Choice();
        this.add(listaLigas);
        listaLigas.setBounds(30, 50, 200, 20); 
        this.cargarListaLigas();
        
        this.tPartidos.setVisible(false);
        this.botonIniciar.setVisible(false);
        
        listaLigas.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                eventoChoice();
            }
        }); 
         
        this.setVisible(true);
    }
  
    /**
     * Agrega las ligas existentes a la lista.
     */
    public void cargarListaLigas(){
        listaLigas.removeAll();
        listaLigas.add("LIGAS");
        
        for (int i = 0; i<ligas.length; i++){
            listaLigas.add(ligas[i].getNombre());
            nroLigas++;
        }        
    }
    
    /**
     * Carga el calendario de encuentros de acuerdo a la liga seleccionada.
     */
    public void cargarCalendario(){  
        Object[] datos = null;
        String[] casilla = null;
        String[] datoArchivo;
        
        tablaPartidos.removeAll();
        
        /**
         * modeloTabla adquiere el modelo de la tabla por default y en él se realiza el dise*o.
         */
        DefaultTableModel modeloTabla = (DefaultTableModel)tablaPartidos.getModel();
        modeloTabla.setRowCount(0);
        modeloTabla.setColumnCount(0);
        
        modeloTabla.addColumn("ID");
        modeloTabla.addColumn("LOCAL");
        modeloTabla.addColumn("VISITANTE");
        modeloTabla.addColumn("FECHA");
        
        datoArchivo = ligas[listaLigas.getSelectedIndex()-1].getCalendarioEncuentros();  
        
        /**
         * Ciclo que asigna los datos al modeloTabla.
         */
        for (int i = 0; i<datoArchivo.length; i++){
            casilla = datoArchivo[i].split(",");
            datos = casilla;
            modeloTabla.addRow(datos);   
        }    
        tablaPartidos.setModel(modeloTabla);            
    }
    
    /**
     * Carga los datos en la tabla de Posiciones.
     */
    public void cargarTablaPosiciones(){
        int[][] matrizPosicion;
        String[] arrayEquipos;
        Object[] arrayDatosJuego = new Object[9];
        
        tablaPosiciones.removeAll();
        
        DefaultTableModel modeloTablaPosiciones = (DefaultTableModel)tablaPosiciones.getModel();
        
        modeloTablaPosiciones.setColumnCount(0);
        modeloTablaPosiciones.setRowCount(0);
        
        matrizPosicion = ligas[listaLigas.getSelectedIndex()-1].getTablaPosiciones().getTablaPosiciones();
        arrayEquipos = ligas[listaLigas.getSelectedIndex()-1].getTablaPosiciones().getEquipos();
        
        modeloTablaPosiciones.addColumn("Pos");
        modeloTablaPosiciones.addColumn("Equipo");
        modeloTablaPosiciones.addColumn("JJ");
        modeloTablaPosiciones.addColumn("JG");
        modeloTablaPosiciones.addColumn("JE");
        modeloTablaPosiciones.addColumn("JP");
        modeloTablaPosiciones.addColumn("GF");
        modeloTablaPosiciones.addColumn("GC");
        modeloTablaPosiciones.addColumn("Ptos");
        
        for (int i = 0; i<arrayEquipos.length; i++){
            for(int h=0; h<arrayEquipos.length; h++){
                if(matrizPosicion[0][h] == i+1){
                    arrayDatosJuego[1] = arrayEquipos[h];
                    for (int j = 0,k = 0; j<modeloTablaPosiciones.getColumnCount(); j++,k++){
                        if(j!=1){
                            arrayDatosJuego[j] = matrizPosicion[k][h]; 
                        }else{
                            k--;
                        }
                    } 
                }                
            }
            modeloTablaPosiciones.addRow(arrayDatosJuego);
        }    
        tablaPosiciones.setModel(modeloTablaPosiciones);
    }
    
    /**
     * Acción al seleccionar algún item de la lista de Ligas.
     */
    public void eventoChoice(){
        int idLiga = listaLigas.getSelectedIndex();
        
        if (idLiga!=0){
            this.cargarCalendario();
            this.cargarTablaPosiciones();
            this.tPartidos.setVisible(true);
            this.botonIniciar.setVisible(true);
            
        }else{
            this.tPartidos.setVisible(false);
            this.botonIniciar.setVisible(false);
        }
    }
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        tPartidos = new javax.swing.JScrollPane();
        tablaPartidos = new javax.swing.JTable(){
            public boolean isCellEditable(int fila, int col){
                return false;
            }
        };
        botonIniciar = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tablaPosiciones = new javax.swing.JTable(){
            public boolean isCellEditable(int fila, int col){
                return false;
            }
        };

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        tablaPartidos.setModel(new javax.swing.table.DefaultTableModel(
        ));
        tPartidos.setViewportView(tablaPartidos);

        botonIniciar.setText("Iniciar");
        botonIniciar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                botonIniciarMouseClicked(evt);
            }
        });

        tablaPosiciones.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        jScrollPane1.setViewportView(tablaPosiciones);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(29, 29, 29)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(botonIniciar, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(tPartidos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 366, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(24, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(140, 140, 140)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(tPartidos, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 46, Short.MAX_VALUE)
                .addComponent(botonIniciar, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(34, 34, 34))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void botonIniciarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_botonIniciarMouseClicked
        int fila = tablaPartidos.getSelectedRow();
        int col = tablaPartidos.getSelectedColumn();      
        int idEncuentro;
         
        if (col == 0){
            LectorArchivo l = new LectorArchivo();
            idEncuentro = Integer.valueOf((String)tablaPartidos.getModel().getValueAt(fila, col));
            encuentro = l.leerEncuentro(ligas[listaLigas.getSelectedIndex()-1].getNombre()+"",idEncuentro+"");
            
            if(encuentro==null){
                idEncuentro = Integer.valueOf((String)tablaPartidos.getModel().getValueAt(fila, col));
                encuentro =  ligas[listaLigas.getSelectedIndex()-1].iniciarEncuentro((String)tablaPartidos.getModel().getValueAt(fila, col));          
                ventanaEquipos = new VentanaEquipos(encuentro, this);
                ventanaEquipos.setVisible(true);
            }else{
                ventanaEquipos = new VentanaEquipos(encuentro, this, true); 
                ventanaEquipos.setVisible(true);
                
            }
            this.setVisible(false);
            
        }else{
            JOptionPane.showMessageDialog(this, "ERROR: Debe seleccionar un ID.");
        }
    }//GEN-LAST:event_botonIniciarMouseClicked

    public Liga[] getLigas() {
        return ligas;
    }

    public Choice getListaLigas() {
        return listaLigas;
    }

    
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(JFrameSeleccionarLiga.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(JFrameSeleccionarLiga.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(JFrameSeleccionarLiga.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(JFrameSeleccionarLiga.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JFrameSeleccionarLiga(new Liga[10]).setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botonIniciar;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane tPartidos;
    private javax.swing.JTable tablaPartidos;
    private javax.swing.JTable tablaPosiciones;
    // End of variables declaration//GEN-END:variables
}
